package com.ry.day1129;

import java.util.Arrays;

public class LC3843 {

    static class Solution {
        /**
         * @param a: An integer array
         * @param b: An integer array
         * @return: smallest difference resultant value
         */
        public int smallestDifference(int[] a, int[] b) {
            Arrays.sort(a);
            Arrays.sort(b);

            int i=0;
            int j=0;
            int ans = Integer.MAX_VALUE;
            while (i<a.length && j<b.length){
                ans = Math.min(ans,Math.abs(a[i]-b[j]));

                //双指针，谁小谁前进
                if(a[i]<b[j]){
                    i++;
                }else{
                    j++;
                }
            }
            return ans;
        }
    }

    public static void main(String[] args) {
        Solution obj = new Solution();
        System.out.println(obj.smallestDifference(new int[]{1,2,3,4},new int[]{7,6,5}));
        System.out.println(obj.smallestDifference(new int[]{3,6,7,4},new int[]{2,8,9,3}));
    }
}



/*
LintCode-Logo
搜索题目、标签、题集
中文
您上个月的个人报告已生成，点击查看
avatar
3843 · 最小差
算法
中等
通过率
64%

题目
题解3
笔记
讨论
排名
记录
描述
给定两个整数数组 a 和 b，在这两个数组中各取一个值，计算两个值的差的绝对值 |a[i] - b[j]|，需要返回可以得到的 最小的结果值。

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


1
≤
a
.
l
e
n
g
t
h
,
b
.
l
e
n
g
t
h
≤
1
0
5
1≤a.length,b.length≤10
5

−
1
0
9
≤
a
[
i
]
,
b
[
j
]
≤
1
0
9
−10
9
 ≤a[i],b[j]≤10
9

样例
样例 1：

输入：
a = [1, 2, 3, 4]
b = [7, 6, 5]
输出：
1
解释：
|a[3] - b[2]| 的值最小，为 1
样例 2：

输入：
a = [3, 6, 7, 4]
b = [2, 8, 9, 3]
输出：
0
解释：
|a[0] - b[3]| 的值最小，为 0
标签
推荐课程

Twitter 后端系统 - Python 项目实战
从0项目经验到深度后端项目操盘，FB架构师万行代码还原真实开发环境，14周简历镀金
18/1881
已开启智能提示
发起考试
30 分 00 秒
12345678910

控制台
        历史提交

 */
